<?php
namespace Admin\Logic;
use \Think\Model;
class RoleLogic extends Model{
	
	protected $tableName	= 'role';
	protected $fields 		= array('id', 'rname', 'oper_auth', 'rinfo', 'is_enabled', 
									'_type'=>array('id'=>'int','rname'=>'varchar','oper_auth'=>'varchar','rinfo'=>'varchar','is_enabled'=>'tinyint')
									);
	protected $_validate 	= array(
									array('rname','require','角色名不能为空！'),	
									array('rname','','该角色已经存在！',0,'unique',1), // 在新增的时候验证rname字段是否唯一
									array('is_enabled',array(0,1),'值的范围不正确！',2,'in'), // 当值不为空的时候判断是否在一个范围内
									);	
	protected $_auto 		= array ( 
									array('is_enabled','1'),  // 新增的时候把is_enabled字段设置为1
									);									
	
	/*
	 * 获取指定行内容
	 * pageRows		每页显示行数,为0表示全读出来
	 * currPage		当前页页数
	 * condition	过滤条件，以数组形式
	 */
	public function getList($pageRows=0,$currPage=1,$condition=array()){
		
		if($pageRows){
			return	M($this->tableName)->where($condition)->order('id desc')->page($currPage.','.$pageRows)->select();
		}
		else{
			return	M($this->tableName)->select();
		}
	}
	
	//获取总页数
	public function getPageCount(){
		
		$count      = M($this->tableName)->count();
		return	$count;
	}
	
	/*
	 * 获取分页
	 * pageRows		每页显示行数
	 */	
	public function getPage($pageRows=10){
		
		$count		= $this->getPageCount();
		$Page       = new \Lib\Page\Ws_page($count,$pageRows);
		return	$Page->show();		
	}
	
	/*
	 * 获取指定行的角色名
	 * condition	过滤条件，以数组形式
	 */	
	public function getRoleName($id){

		return	M($this->tableName)->where('id='.$id)->getField("rname");

	}	

	/*
	 * 获取权限详细内容
	 * datatable		数据源
	 */	
	public function getOADetail($datatable){
		$Operauth		= D('Operauth','Logic');	
		foreach($datatable as $w => $v){
			$arr 		= explode(',',$v['oper_auth']);
			$arrName	= array();
			foreach($arr as $k){
				if($k>0){
					//获取操作权限相关数据
					$arrName[]	= $Operauth->getOAName($k);
				}
			}
			$strName	= implode(',',$arrName);
			$datatable[$w]['OAName']	= $strName;
		}
		return $datatable;
	}
	
	/*
	 * 操作权限检测
	 * oaid		操作权限id
	 * role_id	角色id
	 */	
	public function checkOperAuth($oaid, $role_id){
		$oper_auth		= M($this->tableName)->getFieldById($role_id,"oper_auth");
		$oa_array		= explode(',',$oper_auth);
		if(in_array($oaid,$oa_array)){
			return true;
		}
		else{
			return false;
		}
	}		
}
